script memo#!/bin/sh
mS=`echo "scale=9; 0.37452" | bc -l`optionの詳細は忘れた。
x=1 dam1="data$1.dat" dam2='data$1.dat' echo $dam1 $dam2こうすると実行結果が、 data1.dat data$1.datとなる。ファイル名をループ内で次々と変えたいなら " " を使うとよい。
mS=`(echo 0.235e-02 | awk '{print $1*1.0}')`
10^(0.1*numL) をすると、couplingをlog プロットするのに 都合のいい間隔で進む。 ベキは整数しか駄目なのでわざわざ次を使う: x^y = exp(y*Log(x) ) 10^(x) = e(x*l(10)) example: 10^($numDM/50) とするときのトリック DMmass=`echo "scale=9; e(($numDM / 50 )*l(10)) " | bc -l`
x=3; y=4; hoge=$(($x+$y)) hoge2=$((3+4)) hoge3=`expr $x + $y`
for(XXX=minXXX; maxXXX; XXX=XXX+stepXXX)だが、bashではそうはいかない。以下のようにする。 (この例は、Mass=1000, 2000, 3000, ..., 20000)
# minXXX : minimal value of XXX
# maxXXX : maxmum value of XXX
# stepXXX : 1回のfor loopで XXX をいくつ増やすか
# numXXX : for loop の初期値
# maxnumXXX : for loop の最後の値 + 1
minMass=`echo "scale=9; 1000" | bc -l`
maxMass=`echo "scale=9; 20000" | bc -l`
step=1000
num=0
maxnum=`echo "scale=0; ($maxMass - $minMass)/$step + 1" | bc`
while [ $num -lt $maxnum ]
do
Mass=`echo "scale=9; $minMass + $step * $num" | bc -l`
(やりたいことを書く)
num=`expr $num + 1`
done
|